Métodos de Predictivos (Clasificación o Aprendizaje-Supervisado)
Se necesita cargar las siguientes librerías
Muestra la distribución de la variable a predecir
equilibrio.variable.predecir<-function(datos,variable.predecir,ylab="Cantidad de individuos",xlab = "",
main=paste("Distribución de la variable",variable.predecir),
col = NA) {
gg_color <- function (n) {
hues <- seq(15, 375, length = n + 1)
hcl(h = hues, l = 65, c = 100)[1:n]
}
if(missing(variable.predecir) | !(variable.predecir %in% colnames(datos))){
stop("variable.predecir tiene que ser ingresada y ser un nombre de columna", call. = FALSE )
}
if(is.character(datos[,variable.predecir]) | is.factor(datos[,variable.predecir])){
if(length(col) == 0 || is.na(col)){
col <- gg_color(length(unique(datos[,variable.predecir])))
}else{
col <- rep(col,length(unique(datos[,variable.predecir])))
}
ggplot(data = datos, mapping = aes_string(x = variable.predecir, fill = variable.predecir)) +
geom_bar() +
scale_fill_manual(values = col, name = variable.predecir) +
labs(x = xlab, y = ylab, title = main) +
theme_minimal() +
theme(legend.position = "bottom")
}else{
stop("La variable a predecir tienen que ser de tipo factor o character", call. = FALSE )
}
}Muestra la distribución de una variable numérica según la variable a predecir
poder.predictivo.numerica<-function(datos,variable.predecir,variable.comparar,ylab="",xlab="",
main=paste("Densidad de la variable",variable.comparar,'según',variable.predecir),
col=NA){
gg_color <- function (n) {
hues <- seq(15, 375, length = n + 1)
hcl(h = hues, l = 65, c = 100)[1:n]
}
if(missing(variable.predecir) | !(variable.predecir %in% colnames(datos))){
stop("variable.predecir tiene que ser ingresada y ser un nombre de columna", call. = FALSE )
}
if(missing(variable.comparar) | !(variable.comparar %in% colnames(datos)) | !is.numeric(datos[,variable.comparar])){
stop("variable.comparar tiene que ser ingresada y ser un nombre de columna numérica", call. = FALSE )
}
if(is.character(datos[,variable.predecir]) | is.factor(datos[,variable.predecir])){
if(length(col) == 0 || is.na(col)){
col <- gg_color(length(unique(datos[,variable.predecir])))
}else{
col <- rep(col,length(unique(datos[,variable.predecir])))
}
ggplot(data = datos, aes_string(variable.comparar, fill = variable.predecir)) +
geom_density(alpha = .7, color = NA) +
scale_fill_manual(values = col) +
labs(title = main , y = ylab, x = xlab ,fill = variable.predecir) +
theme_minimal() +
theme(legend.position = 'bottom',
legend.title = element_blank(),
text = element_text(size = 15))
}else{
stop("La variable a predecir tienen que ser de tipo factor o character", call. = FALSE )
}
}Muestra la distribución de una variable categórica según la variable a predecir
poder.predictivo.categorica<-function(datos,variable.predecir,variable.comparar,ylab="",xlab="",
main=paste("Densidad de la variable",variable.comparar,'según',variable.predecir),
col=NA){
gg_color <- function (n) {
hues <- seq(15, 375, length = n + 1)
hcl(h = hues, l = 65, c = 100)[1:n]
}
if(missing(variable.predecir) | !(variable.predecir %in% colnames(datos))){
stop("variable.predecir tiene que ser ingresada y ser un nombre de columna", call. = FALSE )
}
if(missing(variable.comparar) | !(variable.comparar %in% colnames(datos)) |
!(is.factor(datos[,variable.comparar]) | is.character(datos[,variable.comparar])) ){
stop("variable.comparar tiene que ser ingresada y ser un nombre de columna categórica", call. = FALSE )
}
if(is.character(datos[,variable.predecir]) | is.factor(datos[,variable.predecir])){
if(length(col) == 0 || is.na(col)){
col <- gg_color(length(unique(datos[,variable.predecir])))
}else{
col <- rep(col,length(unique(datos[,variable.predecir])))
}
datos2 <- datos %>%
dplyr::group_by_(variable.comparar, variable.predecir) %>%
dplyr::summarise(count = n())
if(variable.comparar != variable.predecir){
datos2 <- datos2 %>% dplyr::group_by_(variable.comparar)
}
datos2 <- datos2 %>% dplyr::mutate(prop = round(count/sum(count),4))
ggplot(data = datos2, mapping = aes_string(x = variable.comparar, y = "prop", fill = variable.predecir)) +
geom_col(position = "fill") +
geom_text(aes(label = glue("{percent(prop)} ({count})")), position = position_stack(vjust = .5), color = "white") +
scale_y_continuous(label = percent) +
labs(y = xlab, x = ylab, title = main) +
scale_fill_manual(values = col, name = variable.predecir) +
theme(legend.position = "bottom")+
coord_flip()
}else{
stop("La variable a predecir tienen que ser de tipo factor o character", call. = FALSE )
}
}Índices para matrices NxN
indices.general <- function(MC) {
precision.global <- sum(diag(MC))/sum(MC)
error.global <- 1 - precision.global
precision.categoria <- diag(MC)/rowSums(MC)
res <- list(matriz.confusion = MC, precision.global = precision.global, error.global = error.global,
precision.categoria = precision.categoria)
names(res) <- c("Matriz de Confusión", "Precisión Global", "Error Global",
"Precisión por categoría")
return(res)
}'data.frame': 150 obs. of 5 variables:
$ s.largo: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
$ s.ancho: num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
$ p.largo: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
$ p.ancho: num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
$ tipo : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
Vamos a generar al azar una tabla de testing de tamaño 50 y una tabla de aprendizaje de tamaño 100.
Se cargan las librerías
Se genera el modelo
n= 100
node), split, n, loss, yval, (yprob)
* denotes terminal node
1) root 100 66 virginica (0.33000000 0.33000000 0.34000000)
2) p.largo< 2.6 33 0 setosa (1.00000000 0.00000000 0.00000000) *
3) p.largo>=2.6 67 33 virginica (0.00000000 0.49253731 0.50746269)
6) p.ancho< 1.75 35 2 versicolor (0.00000000 0.94285714 0.05714286) *
7) p.ancho>=1.75 32 0 virginica (0.00000000 0.00000000 1.00000000) *
Se genera la predicción
# Type="class" hace que el modelo prediga clases y no probabilidades
prediccion <- predict(modelo, ttesting, type ='class')
prediccion 32 33 61 75 62 51
setosa setosa versicolor versicolor versicolor versicolor
38 31 54 116 92 30
setosa setosa versicolor virginica versicolor setosa
104 145 23 60 139 67
virginica virginica setosa versicolor virginica versicolor
87 80 108 99 20 95
versicolor versicolor virginica versicolor setosa versicolor
2 71 12 127 55 48
setosa virginica setosa virginica versicolor setosa
68 25 4 114 18 135
versicolor setosa setosa virginica setosa versicolor
129 72 56 44 40 140
virginica versicolor versicolor setosa setosa virginica
6 101 42 146 120 107
setosa virginica setosa virginica versicolor versicolor
122 147
virginica virginica
Levels: setosa versicolor virginica
Podemos graficar el árbol de decisión
prp(modelo, extra = 104, branch.type = 2,
box.col = c("pink", "palegreen3", "cyan")[modelo$frame$yval])Se genera la matriz de confusión
prediccion
setosa versicolor virginica
setosa 17 0 0
versicolor 0 16 1
virginica 0 3 13
Índices de calidad de la predicción
$`Matriz de Confusión`
prediccion
setosa versicolor virginica
setosa 17 0 0
versicolor 0 16 1
virginica 0 3 13
$`Precisión Global`
[1] 0.92
$`Error Global`
[1] 0.08
$`Precisión por categoría`
setosa versicolor virginica
1.0000000 0.9411765 0.8125000
Se cargan las librerías
Se genera el modelo
n= 100
node), split, n, loss, yval, (yprob)
* denotes terminal node
1) root 100 66 virginica (0.33000000 0.33000000 0.34000000)
2) p.largo< 2.6 33 0 setosa (1.00000000 0.00000000 0.00000000) *
3) p.largo>=2.6 67 33 virginica (0.00000000 0.49253731 0.50746269)
6) p.ancho< 1.75 35 2 versicolor (0.00000000 0.94285714 0.05714286) *
7) p.ancho>=1.75 32 0 virginica (0.00000000 0.00000000 1.00000000) *
Se genera la predicción
[1] setosa setosa versicolor versicolor versicolor versicolor
[7] setosa setosa versicolor virginica versicolor setosa
[13] virginica virginica setosa versicolor virginica versicolor
[19] versicolor versicolor virginica versicolor setosa versicolor
[25] setosa virginica setosa virginica versicolor setosa
[31] versicolor setosa setosa virginica setosa versicolor
[37] virginica versicolor versicolor setosa setosa virginica
[43] setosa virginica setosa virginica versicolor versicolor
[49] virginica virginica
Levels: setosa versicolor virginica
Podemos graficar el árbol de decisión
prp(modelo, extra = 104, branch.type = 2,
box.col = c("pink", "palegreen3", "cyan")[modelo$frame$yval])Se genera la matriz de confusión
prediction
real setosa versicolor virginica
setosa 17 0 0
versicolor 0 16 1
virginica 0 3 13
Índices de calidad de la predicción
Confusion Matrix:
prediction
real setosa versicolor virginica
setosa 17 0 0
versicolor 0 16 1
virginica 0 3 13
Overall Accuracy: 0.9200
Overall Error: 0.0800
Category Accuracy:
setosa versicolor virginica
1.000000 0.941176 0.812500
Podemos omitir crear la matriz de confusión
Confusion Matrix:
prediction
real setosa versicolor virginica
setosa 17 0 0
versicolor 0 16 1
virginica 0 3 13
Overall Accuracy: 0.9200
Overall Error: 0.0800
Category Accuracy:
setosa versicolor virginica
1.000000 0.941176 0.812500
Generar el árbol cambiando la cantidad mínima de individuos en los nodos hoja (terminales).
Es decir, modificando el parámetro minsplit = 20
Se cargan las librerías
Se genera el modelo
n= 100
node), split, n, loss, yval, (yprob)
* denotes terminal node
1) root 100 66 virginica (0.33000000 0.33000000 0.34000000)
2) p.largo< 2.6 33 0 setosa (1.00000000 0.00000000 0.00000000) *
3) p.largo>=2.6 67 33 virginica (0.00000000 0.49253731 0.50746269)
6) p.ancho< 1.75 35 2 versicolor (0.00000000 0.94285714 0.05714286)
12) p.largo< 5.05 32 0 versicolor (0.00000000 1.00000000 0.00000000) *
13) p.largo>=5.05 3 1 virginica (0.00000000 0.33333333 0.66666667)
26) s.largo< 6.15 1 0 versicolor (0.00000000 1.00000000 0.00000000) *
27) s.largo>=6.15 2 0 virginica (0.00000000 0.00000000 1.00000000) *
7) p.ancho>=1.75 32 0 virginica (0.00000000 0.00000000 1.00000000) *
Se genera la predicción
# Type="class" hace que el modelo prediga clases y no probabilidades
prediccion <- predict(modelo, ttesting, type ='class')
prediccion 32 33 61 75 62 51
setosa setosa versicolor versicolor versicolor versicolor
38 31 54 116 92 30
setosa setosa versicolor virginica versicolor setosa
104 145 23 60 139 67
virginica virginica setosa versicolor virginica versicolor
87 80 108 99 20 95
versicolor versicolor virginica versicolor setosa versicolor
2 71 12 127 55 48
setosa virginica setosa virginica versicolor setosa
68 25 4 114 18 135
versicolor setosa setosa virginica setosa versicolor
129 72 56 44 40 140
virginica versicolor versicolor setosa setosa virginica
6 101 42 146 120 107
setosa virginica setosa virginica versicolor versicolor
122 147
virginica virginica
Levels: setosa versicolor virginica
Podemos graficar el árbol de decisión
prp(modelo, extra = 104, branch.type = 2,
box.col = c("pink", "palegreen3", "cyan")[modelo$frame$yval])Se genera la matriz de confusión
prediccion
setosa versicolor virginica
setosa 17 0 0
versicolor 0 16 1
virginica 0 3 13
Índices de calidad de la predicción
$`Matriz de Confusión`
prediccion
setosa versicolor virginica
setosa 17 0 0
versicolor 0 16 1
virginica 0 3 13
$`Precisión Global`
[1] 0.92
$`Error Global`
[1] 0.08
$`Precisión por categoría`
setosa versicolor virginica
1.0000000 0.9411765 0.8125000
Se cargan las librerías
Se genera el modelo
n= 100
node), split, n, loss, yval, (yprob)
* denotes terminal node
1) root 100 66 virginica (0.33000000 0.33000000 0.34000000)
2) p.largo< 2.6 33 0 setosa (1.00000000 0.00000000 0.00000000) *
3) p.largo>=2.6 67 33 virginica (0.00000000 0.49253731 0.50746269)
6) p.ancho< 1.75 35 2 versicolor (0.00000000 0.94285714 0.05714286)
12) p.largo< 5.05 32 0 versicolor (0.00000000 1.00000000 0.00000000) *
13) p.largo>=5.05 3 1 virginica (0.00000000 0.33333333 0.66666667)
26) s.largo< 6.15 1 0 versicolor (0.00000000 1.00000000 0.00000000) *
27) s.largo>=6.15 2 0 virginica (0.00000000 0.00000000 1.00000000) *
7) p.ancho>=1.75 32 0 virginica (0.00000000 0.00000000 1.00000000) *
Se genera la predicción
[1] setosa setosa versicolor versicolor versicolor versicolor
[7] setosa setosa versicolor virginica versicolor setosa
[13] virginica virginica setosa versicolor virginica versicolor
[19] versicolor versicolor virginica versicolor setosa versicolor
[25] setosa virginica setosa virginica versicolor setosa
[31] versicolor setosa setosa virginica setosa versicolor
[37] virginica versicolor versicolor setosa setosa virginica
[43] setosa virginica setosa virginica versicolor versicolor
[49] virginica virginica
Levels: setosa versicolor virginica
Podemos graficar el árbol de decisión
prp(modelo, extra = 104, branch.type = 2,
box.col = c("pink", "palegreen3", "cyan")[modelo$frame$yval])Se genera la matriz de confusión
prediction
real setosa versicolor virginica
setosa 17 0 0
versicolor 0 16 1
virginica 0 3 13
Índices de calidad de la predicción
Confusion Matrix:
prediction
real setosa versicolor virginica
setosa 17 0 0
versicolor 0 16 1
virginica 0 3 13
Overall Accuracy: 0.9200
Overall Error: 0.0800
Category Accuracy:
setosa versicolor virginica
1.000000 0.941176 0.812500
Podemos omitir crear la matriz de confusión
Confusion Matrix:
prediction
real setosa versicolor virginica
setosa 17 0 0
versicolor 0 16 1
virginica 0 3 13
Overall Accuracy: 0.9200
Overall Error: 0.0800
Category Accuracy:
setosa versicolor virginica
1.000000 0.941176 0.812500
Utilizando los datos que previamente cargamos
Podemos visualizar la distribución de las variables numéricas según la variable a predecir.
Utilizando los mismo datos para prueba (ttesting) y aprendizaje (taprendizaje) que creamos anteriormente.
Se cargan las librerías
Se genera el modelo
n= 100
node), split, n, loss, yval, (yprob)
* denotes terminal node
1) root 100 66 virginica (0.33000000 0.33000000 0.34000000)
2) p.largo< 2.6 33 0 setosa (1.00000000 0.00000000 0.00000000) *
3) p.largo>=2.6 67 33 virginica (0.00000000 0.49253731 0.50746269)
6) p.ancho< 1.75 35 2 versicolor (0.00000000 0.94285714 0.05714286)
12) p.largo< 5.05 32 0 versicolor (0.00000000 1.00000000 0.00000000) *
13) p.largo>=5.05 3 1 virginica (0.00000000 0.33333333 0.66666667) *
7) p.ancho>=1.75 32 0 virginica (0.00000000 0.00000000 1.00000000) *
Se genera la predicción
# Type="class" hace que el modelo prediga clases y no probabilidades
prediccion <- predict(modelo, ttesting, type ='class')
prediccion 32 33 61 75 62 51
setosa setosa versicolor versicolor versicolor versicolor
38 31 54 116 92 30
setosa setosa versicolor virginica versicolor setosa
104 145 23 60 139 67
virginica virginica setosa versicolor virginica versicolor
87 80 108 99 20 95
versicolor versicolor virginica versicolor setosa versicolor
2 71 12 127 55 48
setosa virginica setosa virginica versicolor setosa
68 25 4 114 18 135
versicolor setosa setosa virginica setosa virginica
129 72 56 44 40 140
virginica versicolor versicolor setosa setosa virginica
6 101 42 146 120 107
setosa virginica setosa virginica versicolor versicolor
122 147
virginica virginica
Levels: setosa versicolor virginica
Podemos graficar el árbol de decisión
prp(modelo, extra = 104, branch.type = 2,
box.col = c("pink", "palegreen3", "cyan")[modelo$frame$yval])Se genera la matriz de confusión
prediccion
setosa versicolor virginica
setosa 17 0 0
versicolor 0 16 1
virginica 0 2 14
Índices de calidad de la predicción
$`Matriz de Confusión`
prediccion
setosa versicolor virginica
setosa 17 0 0
versicolor 0 16 1
virginica 0 2 14
$`Precisión Global`
[1] 0.94
$`Error Global`
[1] 0.06
$`Precisión por categoría`
setosa versicolor virginica
1.0000000 0.9411765 0.8750000
Se cargan las librerías
Se genera el modelo
n= 100
node), split, n, loss, yval, (yprob)
* denotes terminal node
1) root 100 66 virginica (0.33000000 0.33000000 0.34000000)
2) p.largo< 2.6 33 0 setosa (1.00000000 0.00000000 0.00000000) *
3) p.largo>=2.6 67 33 virginica (0.00000000 0.49253731 0.50746269)
6) p.ancho< 1.75 35 2 versicolor (0.00000000 0.94285714 0.05714286)
12) p.largo< 5.05 32 0 versicolor (0.00000000 1.00000000 0.00000000) *
13) p.largo>=5.05 3 1 virginica (0.00000000 0.33333333 0.66666667) *
7) p.ancho>=1.75 32 0 virginica (0.00000000 0.00000000 1.00000000) *
Se genera la predicción
[1] setosa setosa versicolor versicolor versicolor versicolor
[7] setosa setosa versicolor virginica versicolor setosa
[13] virginica virginica setosa versicolor virginica versicolor
[19] versicolor versicolor virginica versicolor setosa versicolor
[25] setosa virginica setosa virginica versicolor setosa
[31] versicolor setosa setosa virginica setosa virginica
[37] virginica versicolor versicolor setosa setosa virginica
[43] setosa virginica setosa virginica versicolor versicolor
[49] virginica virginica
Levels: setosa versicolor virginica
Podemos graficar el árbol de decisión
prp(modelo, extra = 104, branch.type = 2,
box.col = c("pink", "palegreen3", "cyan")[modelo$frame$yval])Se genera la matriz de confusión
prediction
real setosa versicolor virginica
setosa 17 0 0
versicolor 0 16 1
virginica 0 2 14
Índices de calidad de la predicción
Confusion Matrix:
prediction
real setosa versicolor virginica
setosa 17 0 0
versicolor 0 16 1
virginica 0 2 14
Overall Accuracy: 0.9400
Overall Error: 0.0600
Category Accuracy:
setosa versicolor virginica
1.000000 0.941176 0.875000
Podemos omitir crear la matriz de confusión
Confusion Matrix:
prediction
real setosa versicolor virginica
setosa 17 0 0
versicolor 0 16 1
virginica 0 2 14
Overall Accuracy: 0.9400
Overall Error: 0.0600
Category Accuracy:
setosa versicolor virginica
1.000000 0.941176 0.875000
setwd("~/Datos(CSV)/")
datos<-read.csv("MuestraCredito5000V2.csv",sep = ";",header=T)
# Recodifica las variables como categóricas ordinales
datos$IngresoNeto <- factor(datos$IngresoNeto, ordered = TRUE)
datos$CoefCreditoAvaluo <- factor(datos$CoefCreditoAvaluo, ordered = TRUE)'data.frame': 5000 obs. of 6 variables:
$ MontoCredito : int 14327 111404 21128 15426 10351 27060 243369 16300 18319 107037 ...
$ IngresoNeto : Ord.factor w/ 2 levels "1"<"2": 1 1 1 2 1 1 1 2 2 2 ...
$ CoefCreditoAvaluo: Ord.factor w/ 12 levels "1"<"2"<"3"<"4"<..: 1 1 1 1 1 1 1 1 1 1 ...
$ MontoCuota : Factor w/ 4 levels "Alto","Bajo",..: 4 4 4 4 4 4 4 4 4 4 ...
$ GradoAcademico : Factor w/ 2 levels "Bachiller","Licenciatura": 1 1 1 1 1 1 1 1 1 1 ...
$ BuenPagador : Factor w/ 2 levels "No","Si": 2 2 2 2 2 2 2 2 2 2 ...
Vamos a generar al azar una tabla de testing con 15% de los datos y una tabla de aprendizaje con 85%
Se cargan las librerías
Se genera el modelo
n= 4250
node), split, n, loss, yval, (yprob)
* denotes terminal node
1) root 4250 599 Si (0.14094118 0.85905882)
2) MontoCredito>=50045 988 279 Si (0.28238866 0.71761134)
4) CoefCreditoAvaluo=1,2,3,4,5,6,7,8,9,10,11 456 197 Si (0.43201754 0.56798246)
8) GradoAcademico=Bachiller 133 33 No (0.75187970 0.24812030)
16) CoefCreditoAvaluo=3,4,5,6,7,8,9,10,11,12 90 4 No (0.95555556 0.04444444) *
17) CoefCreditoAvaluo=1,2 43 14 Si (0.32558140 0.67441860)
34) MontoCuota=Medio 13 2 No (0.84615385 0.15384615) *
35) MontoCuota=Bajo,MuyBajo 30 3 Si (0.10000000 0.90000000) *
9) GradoAcademico=Licenciatura 323 97 Si (0.30030960 0.69969040)
18) CoefCreditoAvaluo=4,5,6,7,8,9,10,11,12 264 95 Si (0.35984848 0.64015152)
36) CoefCreditoAvaluo=1,2,3,4,5,6,7,8,9 120 59 No (0.50833333 0.49166667)
72) CoefCreditoAvaluo=8,9,10,11,12 49 8 No (0.83673469 0.16326531) *
73) CoefCreditoAvaluo=1,2,3,4,5,6,7 71 20 Si (0.28169014 0.71830986)
146) MontoCuota=MuyBajo 12 0 No (1.00000000 0.00000000) *
147) MontoCuota=Alto,Bajo,Medio 59 8 Si (0.13559322 0.86440678) *
37) CoefCreditoAvaluo=10,11,12 144 34 Si (0.23611111 0.76388889)
74) MontoCredito>=149374 42 19 Si (0.45238095 0.54761905)
148) IngresoNeto=2 16 2 No (0.87500000 0.12500000) *
149) IngresoNeto=1 26 5 Si (0.19230769 0.80769231) *
75) MontoCredito< 149374 102 15 Si (0.14705882 0.85294118) *
19) CoefCreditoAvaluo=1,2,3 59 2 Si (0.03389831 0.96610169) *
5) CoefCreditoAvaluo=12 532 82 Si (0.15413534 0.84586466)
10) GradoAcademico=Licenciatura 122 56 Si (0.45901639 0.54098361)
20) MontoCuota=Alto 30 3 No (0.90000000 0.10000000) *
21) MontoCuota=Bajo,Medio,MuyBajo 92 29 Si (0.31521739 0.68478261) *
11) GradoAcademico=Bachiller 410 26 Si (0.06341463 0.93658537) *
3) MontoCredito< 50045 3262 320 Si (0.09809933 0.90190067)
6) CoefCreditoAvaluo=1,2,3,4,5,6,7,8,9,10,11 1661 261 Si (0.15713426 0.84286574)
12) GradoAcademico=Bachiller 275 58 No (0.78909091 0.21090909)
24) CoefCreditoAvaluo=3,4,5,6,7,8,9,10,11,12 225 14 No (0.93777778 0.06222222) *
25) CoefCreditoAvaluo=1,2 50 6 Si (0.12000000 0.88000000) *
13) GradoAcademico=Licenciatura 1386 44 Si (0.03174603 0.96825397) *
7) CoefCreditoAvaluo=12 1601 59 Si (0.03685197 0.96314803) *
Se genera la predicción
# Type="class" hace que el modelo prediga clases y no probabilidades
prediccion <- predict(modelo, ttesting, type ='class')
prediccion 396 2295 4520 1871 718 98 3265 3327 805 2309 1338 4872 320 1104 1740
Si No Si Si Si Si Si Si Si No Si No Si Si Si
2267 1423 702 449 4819 1117 1134 359 4221 3678 1814 4448 3384 4951 1615
No No Si Si Si Si Si Si Si Si Si Si Si No Si
336 1997 3307 2271 4613 4247 1570 1558 2068 2171 847 1786 1189 3354 2688
Si Si Si No Si Si Si Si Si Si Si Si Si Si Si
4225 758 4734 621 975 3829 2164 474 2197 2813 4472 328 1337 2281 3412
Si Si Si Si Si Si Si Si Si Si Si Si Si No Si
2741 3564 2039 4830 191 2881 760 1587 3908 3539 4175 4738 1864 3882 2838
Si Si Si No Si Si Si Si Si Si Si No Si Si Si
4735 997 149 704 3630 4317 1254 865 19 2030 1251 2641 3127 1095 928
No Si Si Si Si Si Si Si Si Si Si Si Si Si Si
3277 1121 1734 2967 2262 3256 2422 3705 3844 3887 1188 17 2394 74 1688
Si Si Si No Si Si No Si Si Si Si Si No Si Si
2389 3751 3874 4679 3528 388 2795 4313 3875 4933 3413 4507 217 3818 3753
Si Si Si Si Si Si Si Si Si No Si Si Si Si Si
4660 2897 3714 346 2149 3266 4721 1450 239 569 4143 2970 4208 3799 4087
Si Si Si Si No Si Si Si Si Si Si Si Si Si Si
2133 3558 26 4647 3633 3403 2612 2216 4040 224 1845 3067 3079 2137 590
Si Si Si Si Si Si Si No Si Si Si Si Si Si Si
2514 4720 2798 254 4026 4424 4917 782 562 3066 3938 1063 2072 288 3509
Si Si Si Si Si Si No Si Si Si Si Si Si Si Si
4237 3410 176 4743 807 124 3827 4050 2131 556 4765 2263 4437 2348 4331
Si Si Si No Si Si Si Si Si Si Si No Si No Si
3741 1235 3901 1031 4802 3451 400 3018 4531 4052 700 2617 2056 3491 237
Si Si Si Si No Si Si Si Si Si Si Si Si Si Si
495 893 732 3700 737 2296 1373 2349 3776 3669 86 2923 455 4285 2635
Si Si Si Si Si No Si No Si Si Si Si Si Si Si
3618 68 258 3526 3795 1781 1585 2568 3492 4421 3032 4254 2827 3021 3198
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
2378 3441 1131 857 4553 2562 3310 441 772 4513 122 2088 2005 4871 2411
No Si Si Si Si Si Si Si Si Si Si Si Si No No
3446 1842 2665 2374 3398 1912 1589 3841 3219 2705 2160 3971 3742 261 4057
Si Si Si No Si Si Si Si Si Si Si Si Si Si Si
1706 2246 2596 1903 3044 4096 53 3635 4010 910 4156 2352 4624 4877 3087
Si No Si Si Si No Si Si Si Si Si Si Si No Si
3759 1991 2950 2302 4885 3507 4651 2380 809 4998 2685 1697 1757 1766 4252
Si Si Si No No Si Si No Si No Si Si Si Si Si
4897 1858 2922 759 482 4086 4022 1310 593 251 576 1490 4879 4988 2519
Si Si Si Si Si Si Si Si Si Si Si Si No Si Si
602 201 2044 2727 120 845 3353 823 4657 2850 3 4978 128 1782 1995
Si Si Si Si No Si Si Si Si Si Si No Si Si Si
3063 1750 1564 2814 285 4792 3458 3853 2792 4663 3847 949 2196 615 4107
Si Si Si Si Si No Si Si Si Si Si Si Si Si Si
875 1733 3181 1594 2866 902 546 4132 3638 1480 2205 2643 3453 2744 1136
Si Si Si Si Si Si Si Si Si Si No Si Si Si Si
4746 3523 645 799 4484 3396 1172 862 1159 1937 3966 3191 814 2456 3135
No Si Si Si Si Si Si Si Si Si Si Si Si Si Si
439 966 4565 4160 2836 4974 40 2170 675 2184 1610 4919 1861 3365 4319
Si Si Si Si Si No Si Si Si Si Si No Si Si Si
103 434 3367 2282 2735 2182 2872 2843 2609 3622 3185 2308 3249 2751 144
Si Si Si No Si No Si Si Si Si Si No Si Si Si
2080 414 2756 2270 4326 3149 1257 3578 3724 3370 964 711 1240 266 3907
Si Si Si No Si Si Si Si Si Si Si Si Si Si Si
3404 2478 213 2257 4090 4169 1934 4200 3736 707 930 3833 3986 4333 452
Si No Si Si Si Si Si Si Si Si Si Si Si Si Si
160 2910 343 2613 2350 802 1290 4768 578 1831 3485 985 1838 3124 3138
Si Si Si Si No Si Si No Si Si Si Si Si Si Si
4866 4669 1467 3248 567 2367 1306 2364 1505 3755 249 2504 3763 2505 95
No Si Si Si Si No Si No Si Si Si Si Si Si Si
2581 2565 4550 574 743 2842 442 111 2901 4580 518 4056 2530 1530 3316
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
2839 3409 998 172 4603 1692 1110 1401 3297 1540 1451 1962 3369 1604 644
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
994 2112 1567 4395 204 4788 161 3954 534 473 1440 2230 4526 3204 3680
Si Si Si Si Si No No Si Si Si Si No Si Si Si
571 4837 796 2181 2046 4509 2214 3299 3366 4492 1129 1985 3178 2561 2419
Si No Si No Si Si Si Si Si Si Si Si Si Si Si
3217 3391 873 3943 1780 667 4808 4264 979 3498 2761 2108 3164 2757 1902
Si Si Si Si Si Si No Si Si Si Si Si Si Si Si
2383 2690 4874 3842 4939 3368 3797 3040 525 1384 2693 506 1143 3393 62
Si Si Si Si No Si Si Si Si Si Si Si Si Si Si
1892 3934 2091 1126 1840 4106 2898 3652 2980 417 818 2518 1283 3909 1503
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
270 1633 915 2361 2748 4394 3769 1211 3373 3268 4495 3582 460 4811 1623
Si Si Si No Si Si Si Si Si Si Si Si Si No Si
1969 3562 4289 4983 349 4915 2681 4298 3347 3118 3906 4993 3046 4186 370
Si Si Si No Si No No Si Si Si Si No Si Si Si
3814 2047 3188 752 273 81 2963 3495 3824 3012 3584 4766 1968 3809 4504
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
3483 3891 4642 1654 405 1285 409 984 4654 2369 3747 2801 4404 586 1600
Si Si Si Si Si Si Si Si Si No Si Si Si Si Si
283 1707 3382 4920 1778 1039 2679 3785 4467 1890 706 4116 3501 1255 2670
Si Si Si No Si Si Si Si Si Si Si Si Si Si Si
925 2333 4519 1231 1037 2728 4036 3062 1066 2053 207 4784 326 3346 821
Si No Si Si Si Si Si Si Si Si Si No Si Si Si
4165 1069 443 3003 3252 2287 1904 2720 2224 715 3101 1745 20 2837 4320
Si Si Si Si Si No Si Si No Si Si Si Si Si Si
3783 1415 4374 4230 80 671 1544 1532 520 4290 2614 2476 2485 2772 582
Si Si Si Si Si Si Si Si Si Si Si No No Si Si
2339 3400 100 4810 4018 3150 1321 3800 397 2189 3837 4635 4699 4539 3602
No Si Si No Si Si Si Si Si No Si Si No Si Si
382 4653 3628 166 2106 4182 94 1017 731 696 2101 2404 2269 1196 1668
Si Si Si Si Si Si Si Si Si Si Si No No Si Si
2959 598 1500 1088 129 884 4991 1836 4005 1241 3728 3091 1422 348 2498
Si Si Si Si Si Si No Si Si Si Si Si Si Si Si
1115 861 3867 472 713 3878 4941 1344 1655 2969 1273 1021 3082 1651 4004
Si Si Si Si Si Si No Si Si Si Si Si Si Si Si
1001 1362 4465 1444 3352 1365 4325 2763 3737 3543 751 842 3061 319 4134
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
Levels: No Si
Podemos graficar el árbol de decisión
prp(modelo, extra = 104, branch.type = 2,
box.col = c("pink", "palegreen3", "cyan")[modelo$frame$yval])Se genera la matriz de confusión
prediccion
No Si
No 76 30
Si 6 638
Índices de calidad de la predicción
$`Matriz de Confusión`
prediccion
No Si
No 76 30
Si 6 638
$`Precisión Global`
[1] 0.952
$`Error Global`
[1] 0.048
$`Precisión por categoría`
No Si
0.7169811 0.9906832
Se cargan las librerías
Se genera el modelo
n= 4250
node), split, n, loss, yval, (yprob)
* denotes terminal node
1) root 4250 599 Si (0.14094118 0.85905882)
2) MontoCredito>=50045 988 279 Si (0.28238866 0.71761134)
4) CoefCreditoAvaluo=1,2,3,4,5,6,7,8,9,10,11 456 197 Si (0.43201754 0.56798246)
8) GradoAcademico=Bachiller 133 33 No (0.75187970 0.24812030)
16) CoefCreditoAvaluo=3,4,5,6,7,8,9,10,11,12 90 4 No (0.95555556 0.04444444) *
17) CoefCreditoAvaluo=1,2 43 14 Si (0.32558140 0.67441860)
34) MontoCuota=Medio 13 2 No (0.84615385 0.15384615) *
35) MontoCuota=Bajo,MuyBajo 30 3 Si (0.10000000 0.90000000) *
9) GradoAcademico=Licenciatura 323 97 Si (0.30030960 0.69969040)
18) CoefCreditoAvaluo=4,5,6,7,8,9,10,11,12 264 95 Si (0.35984848 0.64015152)
36) CoefCreditoAvaluo=1,2,3,4,5,6,7,8,9 120 59 No (0.50833333 0.49166667)
72) CoefCreditoAvaluo=8,9,10,11,12 49 8 No (0.83673469 0.16326531) *
73) CoefCreditoAvaluo=1,2,3,4,5,6,7 71 20 Si (0.28169014 0.71830986)
146) MontoCuota=MuyBajo 12 0 No (1.00000000 0.00000000) *
147) MontoCuota=Alto,Bajo,Medio 59 8 Si (0.13559322 0.86440678) *
37) CoefCreditoAvaluo=10,11,12 144 34 Si (0.23611111 0.76388889)
74) MontoCredito>=149374 42 19 Si (0.45238095 0.54761905)
148) IngresoNeto=2 16 2 No (0.87500000 0.12500000) *
149) IngresoNeto=1 26 5 Si (0.19230769 0.80769231) *
75) MontoCredito< 149374 102 15 Si (0.14705882 0.85294118) *
19) CoefCreditoAvaluo=1,2,3 59 2 Si (0.03389831 0.96610169) *
5) CoefCreditoAvaluo=12 532 82 Si (0.15413534 0.84586466)
10) GradoAcademico=Licenciatura 122 56 Si (0.45901639 0.54098361)
20) MontoCuota=Alto 30 3 No (0.90000000 0.10000000) *
21) MontoCuota=Bajo,Medio,MuyBajo 92 29 Si (0.31521739 0.68478261) *
11) GradoAcademico=Bachiller 410 26 Si (0.06341463 0.93658537) *
3) MontoCredito< 50045 3262 320 Si (0.09809933 0.90190067)
6) CoefCreditoAvaluo=1,2,3,4,5,6,7,8,9,10,11 1661 261 Si (0.15713426 0.84286574)
12) GradoAcademico=Bachiller 275 58 No (0.78909091 0.21090909)
24) CoefCreditoAvaluo=3,4,5,6,7,8,9,10,11,12 225 14 No (0.93777778 0.06222222) *
25) CoefCreditoAvaluo=1,2 50 6 Si (0.12000000 0.88000000) *
13) GradoAcademico=Licenciatura 1386 44 Si (0.03174603 0.96825397) *
7) CoefCreditoAvaluo=12 1601 59 Si (0.03685197 0.96314803) *
Se genera la predicción
[1] Si No Si Si Si Si Si Si Si No Si No Si Si Si No No Si Si Si Si Si Si
[24] Si Si Si Si Si No Si Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si
[47] Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si No Si Si Si Si Si
[70] Si Si No Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[93] Si No Si Si No Si Si Si Si Si No Si Si Si Si Si Si Si Si Si Si Si No
[116] Si Si Si Si Si Si Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si Si
[139] Si Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si
[162] Si Si Si Si Si Si Si No Si Si Si Si Si Si Si No Si No Si Si Si Si Si
[185] No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si No Si No Si Si Si Si
[208] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si
[231] Si Si Si Si Si Si Si Si No No Si Si Si No Si Si Si Si Si Si Si Si Si
[254] Si Si Si No Si Si Si No Si Si Si Si Si Si Si No Si Si Si Si No No Si
[277] Si No Si No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si No Si
[300] Si Si Si Si Si No Si Si Si Si Si Si No Si Si Si Si Si Si Si Si No Si
[323] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si
[346] No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si No Si Si
[369] Si Si Si No Si Si Si Si Si Si No Si No Si Si Si Si Si No Si Si Si Si
[392] Si Si No Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si Si Si Si
[415] Si Si Si Si Si Si Si Si Si Si No Si Si No Si Si Si Si Si Si Si No Si
[438] Si Si Si No Si No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[461] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[484] Si Si No No Si Si Si Si No Si Si Si Si No Si No Si Si Si Si Si Si Si
[507] Si Si Si Si Si Si Si Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si
[530] No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[553] Si Si Si Si Si Si No Si Si Si Si Si Si Si Si Si No Si Si Si Si No Si
[576] No No Si Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[599] Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si Si Si Si Si No Si Si
[622] Si Si Si Si Si Si Si Si Si Si No Si Si Si Si Si Si Si Si Si No Si Si
[645] Si Si Si Si Si Si No Si Si No Si Si Si Si Si Si Si Si Si Si Si Si Si
[668] Si Si Si Si No No Si Si No Si Si No Si Si Si Si Si No Si Si No Si Si
[691] Si Si Si Si Si Si Si Si Si Si Si No No Si Si Si Si Si Si Si Si No Si
[714] Si Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si Si Si Si Si Si
[737] Si Si Si Si Si Si Si Si Si Si Si Si Si Si
Levels: No Si
Podemos graficar el árbol de decisión
prp(modelo, extra = 104, branch.type = 2,
box.col = c("pink", "palegreen3", "cyan")[modelo$frame$yval])Se genera la matriz de confusión
prediction
real No Si
No 76 30
Si 6 638
Índices de calidad de la predicción
Confusion Matrix:
prediction
real No Si
No 76 30
Si 6 638
Overall Accuracy: 0.9520
Overall Error: 0.0480
Category Accuracy:
No Si
0.716981 0.990683
Podemos omitir crear la matriz de confusión
Confusion Matrix:
prediction
real No Si
No 76 30
Si 6 638
Overall Accuracy: 0.9520
Overall Error: 0.0480
Category Accuracy:
No Si
0.716981 0.990683
Utilizando los datos que previamente cargamos
Podemos visualizar la distribución de las variables numéricas y categóricas según la variable a predecir.
Utilizando los mismo datos para prueba (ttesting) y aprendizaje (taprendizaje) que creamos anteriormente.
Se cargan las librerías
Se genera el modelo
modelo <- rpart(BuenPagador~CoefCreditoAvaluo+MontoCuota+GradoAcademico, data = taprendizaje, minsplit = 2)
modelon= 4250
node), split, n, loss, yval, (yprob)
* denotes terminal node
1) root 4250 599 Si (0.14094118 0.85905882)
2) CoefCreditoAvaluo=1,2,3,4,5,6,7,8,9,10,11 2117 458 Si (0.21634388 0.78365612)
4) GradoAcademico=Bachiller 408 91 No (0.77696078 0.22303922)
8) CoefCreditoAvaluo=3,4,5,6,7,8,9,10,11,12 315 18 No (0.94285714 0.05714286) *
9) CoefCreditoAvaluo=1,2 93 20 Si (0.21505376 0.78494624)
18) MontoCuota=Alto,Medio 17 2 No (0.88235294 0.11764706) *
19) MontoCuota=Bajo,MuyBajo 76 5 Si (0.06578947 0.93421053) *
5) GradoAcademico=Licenciatura 1709 141 Si (0.08250439 0.91749561) *
3) CoefCreditoAvaluo=12 2133 141 Si (0.06610408 0.93389592) *
Se genera la predicción
# Type="class" hace que el modelo prediga clases y no probabilidades
prediccion <- predict(modelo, ttesting, type ='class')
prediccion 396 2295 4520 1871 718 98 3265 3327 805 2309 1338 4872 320 1104 1740
Si No Si Si Si Si Si Si Si No Si No Si Si Si
2267 1423 702 449 4819 1117 1134 359 4221 3678 1814 4448 3384 4951 1615
No No Si Si Si Si Si Si Si Si Si Si Si No Si
336 1997 3307 2271 4613 4247 1570 1558 2068 2171 847 1786 1189 3354 2688
Si Si Si No Si Si Si Si Si Si Si Si Si Si Si
4225 758 4734 621 975 3829 2164 474 2197 2813 4472 328 1337 2281 3412
Si Si Si Si Si Si Si Si Si Si Si Si Si No Si
2741 3564 2039 4830 191 2881 760 1587 3908 3539 4175 4738 1864 3882 2838
Si Si Si No Si Si Si Si Si Si Si No Si Si Si
4735 997 149 704 3630 4317 1254 865 19 2030 1251 2641 3127 1095 928
No Si Si Si Si Si Si Si Si Si Si Si Si Si Si
3277 1121 1734 2967 2262 3256 2422 3705 3844 3887 1188 17 2394 74 1688
Si Si Si No Si Si Si Si Si Si Si Si No Si Si
2389 3751 3874 4679 3528 388 2795 4313 3875 4933 3413 4507 217 3818 3753
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
4660 2897 3714 346 2149 3266 4721 1450 239 569 4143 2970 4208 3799 4087
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
2133 3558 26 4647 3633 3403 2612 2216 4040 224 1845 3067 3079 2137 590
Si Si Si Si Si Si Si No Si Si Si Si Si Si Si
2514 4720 2798 254 4026 4424 4917 782 562 3066 3938 1063 2072 288 3509
Si Si Si Si Si Si No Si Si Si Si Si Si Si Si
4237 3410 176 4743 807 124 3827 4050 2131 556 4765 2263 4437 2348 4331
Si Si Si No Si Si Si Si Si Si Si No Si No Si
3741 1235 3901 1031 4802 3451 400 3018 4531 4052 700 2617 2056 3491 237
Si Si Si Si No Si Si Si Si Si Si Si Si Si Si
495 893 732 3700 737 2296 1373 2349 3776 3669 86 2923 455 4285 2635
Si Si Si Si Si No Si No Si Si Si Si Si Si Si
3618 68 258 3526 3795 1781 1585 2568 3492 4421 3032 4254 2827 3021 3198
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
2378 3441 1131 857 4553 2562 3310 441 772 4513 122 2088 2005 4871 2411
No Si Si Si Si Si Si Si Si Si Si Si Si No No
3446 1842 2665 2374 3398 1912 1589 3841 3219 2705 2160 3971 3742 261 4057
Si Si Si No Si Si Si Si Si Si Si Si Si Si Si
1706 2246 2596 1903 3044 4096 53 3635 4010 910 4156 2352 4624 4877 3087
Si No Si Si Si Si Si Si Si Si Si Si Si No Si
3759 1991 2950 2302 4885 3507 4651 2380 809 4998 2685 1697 1757 1766 4252
Si Si Si No No Si Si No Si Si Si Si Si Si Si
4897 1858 2922 759 482 4086 4022 1310 593 251 576 1490 4879 4988 2519
Si Si Si Si Si Si Si Si Si Si Si Si No Si Si
602 201 2044 2727 120 845 3353 823 4657 2850 3 4978 128 1782 1995
Si Si Si Si No Si Si Si Si Si Si Si Si Si Si
3063 1750 1564 2814 285 4792 3458 3853 2792 4663 3847 949 2196 615 4107
Si Si Si Si Si No Si Si Si Si Si Si No Si Si
875 1733 3181 1594 2866 902 546 4132 3638 1480 2205 2643 3453 2744 1136
Si Si Si Si Si Si Si Si Si Si No Si Si Si Si
4746 3523 645 799 4484 3396 1172 862 1159 1937 3966 3191 814 2456 3135
No Si Si Si Si Si Si Si Si Si Si Si Si Si Si
439 966 4565 4160 2836 4974 40 2170 675 2184 1610 4919 1861 3365 4319
Si Si Si Si Si Si Si Si Si Si Si No Si Si Si
103 434 3367 2282 2735 2182 2872 2843 2609 3622 3185 2308 3249 2751 144
Si Si Si No Si No Si Si Si Si Si No Si Si Si
2080 414 2756 2270 4326 3149 1257 3578 3724 3370 964 711 1240 266 3907
Si Si Si No Si Si Si Si Si Si Si Si Si Si Si
3404 2478 213 2257 4090 4169 1934 4200 3736 707 930 3833 3986 4333 452
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
160 2910 343 2613 2350 802 1290 4768 578 1831 3485 985 1838 3124 3138
Si Si Si Si No Si Si No Si Si Si Si Si Si Si
4866 4669 1467 3248 567 2367 1306 2364 1505 3755 249 2504 3763 2505 95
No Si Si Si Si No Si No Si Si Si Si Si Si Si
2581 2565 4550 574 743 2842 442 111 2901 4580 518 4056 2530 1530 3316
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
2839 3409 998 172 4603 1692 1110 1401 3297 1540 1451 1962 3369 1604 644
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
994 2112 1567 4395 204 4788 161 3954 534 473 1440 2230 4526 3204 3680
Si Si Si Si Si No Si Si Si Si Si No Si Si Si
571 4837 796 2181 2046 4509 2214 3299 3366 4492 1129 1985 3178 2561 2419
Si No Si No Si Si Si Si Si Si Si Si Si Si Si
3217 3391 873 3943 1780 667 4808 4264 979 3498 2761 2108 3164 2757 1902
Si Si Si Si Si Si No Si Si Si Si Si Si Si Si
2383 2690 4874 3842 4939 3368 3797 3040 525 1384 2693 506 1143 3393 62
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
1892 3934 2091 1126 1840 4106 2898 3652 2980 417 818 2518 1283 3909 1503
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
270 1633 915 2361 2748 4394 3769 1211 3373 3268 4495 3582 460 4811 1623
Si Si Si No Si Si Si Si Si Si Si Si Si No Si
1969 3562 4289 4983 349 4915 2681 4298 3347 3118 3906 4993 3046 4186 370
Si Si Si No Si No No Si Si Si Si Si Si Si Si
3814 2047 3188 752 273 81 2963 3495 3824 3012 3584 4766 1968 3809 4504
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
3483 3891 4642 1654 405 1285 409 984 4654 2369 3747 2801 4404 586 1600
Si Si Si Si Si Si Si Si Si No Si Si Si Si Si
283 1707 3382 4920 1778 1039 2679 3785 4467 1890 706 4116 3501 1255 2670
Si Si Si No Si Si Si Si Si Si Si Si Si Si Si
925 2333 4519 1231 1037 2728 4036 3062 1066 2053 207 4784 326 3346 821
Si No Si Si Si Si Si Si Si Si Si No Si Si Si
4165 1069 443 3003 3252 2287 1904 2720 2224 715 3101 1745 20 2837 4320
Si Si Si Si Si No Si Si No Si Si Si Si Si Si
3783 1415 4374 4230 80 671 1544 1532 520 4290 2614 2476 2485 2772 582
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
2339 3400 100 4810 4018 3150 1321 3800 397 2189 3837 4635 4699 4539 3602
No Si Si No Si Si Si Si Si No Si Si No Si Si
382 4653 3628 166 2106 4182 94 1017 731 696 2101 2404 2269 1196 1668
Si Si Si Si Si Si Si Si Si Si Si Si No Si Si
2959 598 1500 1088 129 884 4991 1836 4005 1241 3728 3091 1422 348 2498
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
1115 861 3867 472 713 3878 4941 1344 1655 2969 1273 1021 3082 1651 4004
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
1001 1362 4465 1444 3352 1365 4325 2763 3737 3543 751 842 3061 319 4134
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
Levels: No Si
Podemos graficar el árbol de decisión
prp(modelo, extra = 104, branch.type = 2,
box.col = c("pink", "palegreen3", "cyan")[modelo$frame$yval])Se genera la matriz de confusión
prediccion
No Si
No 63 43
Si 4 640
Índices de calidad de la predicción
$`Matriz de Confusión`
prediccion
No Si
No 63 43
Si 4 640
$`Precisión Global`
[1] 0.9373333
$`Error Global`
[1] 0.06266667
$`Precisión por categoría`
No Si
0.5943396 0.9937888
Se cargan las librerías
Se genera el modelo
modelo <- train.rpart(BuenPagador~CoefCreditoAvaluo+MontoCuota+GradoAcademico, data = taprendizaje, minsplit = 2)
modelon= 4250
node), split, n, loss, yval, (yprob)
* denotes terminal node
1) root 4250 599 Si (0.14094118 0.85905882)
2) CoefCreditoAvaluo=1,2,3,4,5,6,7,8,9,10,11 2117 458 Si (0.21634388 0.78365612)
4) GradoAcademico=Bachiller 408 91 No (0.77696078 0.22303922)
8) CoefCreditoAvaluo=3,4,5,6,7,8,9,10,11,12 315 18 No (0.94285714 0.05714286) *
9) CoefCreditoAvaluo=1,2 93 20 Si (0.21505376 0.78494624)
18) MontoCuota=Alto,Medio 17 2 No (0.88235294 0.11764706) *
19) MontoCuota=Bajo,MuyBajo 76 5 Si (0.06578947 0.93421053) *
5) GradoAcademico=Licenciatura 1709 141 Si (0.08250439 0.91749561) *
3) CoefCreditoAvaluo=12 2133 141 Si (0.06610408 0.93389592) *
Se genera la predicción
[1] Si No Si Si Si Si Si Si Si No Si No Si Si Si No No Si Si Si Si Si Si
[24] Si Si Si Si Si No Si Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si
[47] Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si No Si Si Si Si Si
[70] Si Si No Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[93] Si No Si Si Si Si Si Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si
[116] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[139] Si Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si
[162] Si Si Si Si Si Si Si No Si Si Si Si Si Si Si No Si No Si Si Si Si Si
[185] No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si No Si No Si Si Si Si
[208] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si
[231] Si Si Si Si Si Si Si Si No No Si Si Si No Si Si Si Si Si Si Si Si Si
[254] Si Si Si No Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si No No Si
[277] Si No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si No Si
[300] Si Si Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si No Si
[323] Si Si Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si
[346] No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[369] Si Si Si No Si Si Si Si Si Si No Si No Si Si Si Si Si No Si Si Si Si
[392] Si Si No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[415] Si Si Si Si Si Si Si Si Si Si No Si Si No Si Si Si Si Si Si Si No Si
[438] Si Si Si No Si No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[461] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[484] Si Si No Si Si Si Si Si No Si Si Si Si No Si No Si Si Si Si Si Si Si
[507] Si Si Si Si Si Si Si Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si
[530] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[553] Si Si Si Si Si Si No Si Si Si Si Si Si Si Si Si No Si Si Si Si No Si
[576] No No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[599] Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si Si Si Si Si No Si Si
[622] Si Si Si Si Si Si Si Si Si Si No Si Si Si Si Si Si Si Si Si No Si Si
[645] Si Si Si Si Si Si No Si Si No Si Si Si Si Si Si Si Si Si Si Si Si Si
[668] Si Si Si Si Si Si Si Si No Si Si No Si Si Si Si Si No Si Si No Si Si
[691] Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si Si Si Si Si Si Si
[714] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[737] Si Si Si Si Si Si Si Si Si Si Si Si Si Si
Levels: No Si
Podemos graficar el árbol de decisión
prp(modelo, extra = 104, branch.type = 2,
box.col = c("pink", "palegreen3", "cyan")[modelo$frame$yval])Se genera la matriz de confusión
prediction
real No Si
No 63 43
Si 4 640
Índices de calidad de la predicción
Confusion Matrix:
prediction
real No Si
No 63 43
Si 4 640
Overall Accuracy: 0.9373
Overall Error: 0.0627
Category Accuracy:
No Si
0.594340 0.993789
Podemos omitir crear la matriz de confusión
Confusion Matrix:
prediction
real No Si
No 63 43
Si 4 640
Overall Accuracy: 0.9373
Overall Error: 0.0627
Category Accuracy:
No Si
0.594340 0.993789